/**
 * Copyright (c) 2018 人人开源 All rights reserved.
 *
 * https://www.renren.io
 *
 * 版权所有，侵权必究！
 */

package com.chengke.commom.utils;


/**
 * 树形结构工具类，如：菜单、部门等
 *
 * @author Mark sunlightcs@gmail.com
 * @since 1.0.0
 */
public class TreeUtils {
//
//    /**
//     * 根据pid，构建树节点
//     */
//    public static <T extends TreeNode> List<T> build(List<T> treeNodes, Long pid) {
//        //pid不能为空
//        AssertUtils.isNull(pid, "pid");
//
//        List<T> treeList = new ArrayList<>();
//        for(T treeNode : treeNodes) {
//            if (pid.equals(treeNode.getPid())) {
//                treeList.add(findChildren(treeNodes, treeNode));
//            }
//        }
//
//        return treeList;
//    }
//
//    /**
//     * 查找子节点
//     */
//    private static <T extends TreeNode> T findChildren(List<T> treeNodes, T rootNode) {
//        for(T treeNode : treeNodes) {
//            if(rootNode.getId().equals(treeNode.getPid())) {
//                rootNode.getChildren().add(findChildren(treeNodes, treeNode));
//            }
//        }
//        return rootNode;
//    }
//
//    /**
//     * 构建树节点
//     */
//    public static <T extends TreeNode> List<T> build(List<T> treeNodes) {
//        List<T> result = new ArrayList<>();
//
//        //list转map
//        Map<Long, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
//        for(T treeNode : treeNodes){
//            nodeMap.put(treeNode.getId(), treeNode);
//        }
//
//        for(T node : nodeMap.values()) {
//            T parent = nodeMap.get(node.getPid());
//            if(parent != null && !(node.getId().equals(parent.getId()))){
//                parent.getChildren().add(node);
//                continue;
//            }
//
//            result.add(node);
//        }
//
//        return result;
//    }

}